<?
	/* Se asegura que el archivo es incluido por el index */
		defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Domicilio_lst( $this );

	class Domicilio_lst  extends Lst
	{
	function Domicilio_lst( &$oModule )
		{
			$this->Lst( $oModule );
		}
	function initialize()
		{
			// Obtiene de su filtro los parametros que necesita para armar el query
			$this->oDomicilio = $this->oModule->loadClass( 'Domicilio_frm' );
			$this->aFields = array_merge ( (array)$this->aFields,  (array)$this->oDomicilio->getFieldArray() );
			
			$this->setTitle ( "Domicilios" );
			$this->setSummary( "Esta tabla contiene el listado de los domicilios" );
			$this->addColumn ( 'Tipo', 'cdTipoDomicilio' );
			$this->addColumn ( 'Domicilio', '' );
			$this->addColumn ( 'Pais', 'cdPais' );
			$this->addColumn ( 'Ciudad', 'cCiudad' );
			$this->addColumn ( 'Telefono', '' );
			$this->addColumn ( 'Fax', '' );
		}
	function query()
		{
			// Arma el Query
				if ( $this->aFields['ncPersona'] )
				{
					// Arma el Filtro de la Consulta
						$this->oWhere->addArray (  $this->oDomicilio->getFilterdArray(), 'Tab.');
						$cSqlWhere = $this->oWhere->make();
					$cSqlA = "SELECT Dom.ncDomicilio, Pai.cdPais, TDo.cdTipoDomicilio, bPorOmision, Dom.cCiudad, Dom.cTelefono, Dom.cFax, Dom.nX, Dom.nY
													FROM atDomicilio as Dom
													JOIN acPais as Pai
														ON Pai.ncPais = Dom.ncPais
													JOIN atPersonaDomicilio as Tab
														ON Tab.ncDomicilio = Dom.ncDomicilio
													JOIN acTipoDomicilio as TDo
														ON TDo.ncTipoDomicilio= Tab.ncTipoDomicilio
										$cSqlWhere";
					$cSqlB = "SELECT Dom.ncDomicilio, Pai.cdPais, 'Laboral', false, Dom.cCiudad, Dom.cTelefono, Dom.cFax, Dom.nX, Dom.nY
											FROM atDomicilio as Dom
											JOIN acPais as Pai
												ON Pai.ncPais = Dom.ncPais
											JOIN atOrganizacionPersona as Tab
												ON Tab.ncDomicilio = Dom.ncDomicilio
										$cSqlWhere";
					$cSql = $cSqlA . ' UNION ALL ' . $cSqlB . $this->oPaging->getOrderBy();
				// Calcula la Cantidad de Total de Filas de la Consulta
					$this->oPaging->setTotalItems ( $this->oDatabase->total($cSqlA) + $this->oDatabase->total($cSqlB)  );
				}
				if ( $this->aFields['ncOrganizacion'] )
				{
					// Arma el Filtro de la Consulta
						$this->oWhere->addArray ( $this->oDomicilio->getFilterdArray() , 'Tab.');
						$cSqlWhere = $this->oWhere->make();
					$cSql = "SELECT Dom.ncDomicilio, Pai.cdPais, TDo.cdTipoDomicilio, bPorOmision, Dom.cCiudad, Dom.cTelefono, Dom.cFax, Dom.nX, Dom.nY
													FROM atDomicilio as Dom
													JOIN acPais as Pai
														ON Pai.ncPais = Dom.ncPais
													JOIN atOrganizacionDomicilio as Tab
														ON Tab.ncDomicilio = Dom.ncDomicilio
													JOIN acTipoDomicilio as TDo
														ON TDo.ncTipoDomicilio= Tab.ncTipoDomicilio
										$cSqlWhere";
					// Calcula la Cantidad de Total de Filas de la Consulta
					$this->oPaging->setTotalItems ( $this->oDatabase->total($cSql) );
				} else
				{
					$this->oWhere->addArray ( $this->oDomicilio->getFilterdArray(), 'Dom.');
					$cSqlWhere = $this->oWhere->make();
					$cSql = "SELECT Dom.ncDomicilio, Pai.cdPais,  Dom.cCiudad, Dom.cTelefono, Dom.cFax, Dom.nX, Dom.nY
													FROM atDomicilio as Dom
													JOIN acPais as Pai
														ON Pai.ncPais = Dom.ncPais
										$cSqlWhere";
					// Calcula la Cantidad de Total de Filas de la Consulta
					$this->oPaging->setTotalItems ( $this->oDatabase->total($cSql) );				
				}
				return $cSql ;
		}
	function makeColumn ( $aRow, $cField )
		{
			switch( $cField )
			{
				case 'Domicilio':
					if ( $aRow["ncDomicilio"] )
					{
						$this->oDomicilio->setValue( $aRow["ncDomicilio"] );
						$cReturn = $this->oDomicilio->getDescription();
					}
				break;
				case 'Telefono':
					if ( $this->oDomicilio->aFields['cTelefono']->getValue() )  $cReturn = '(' . $this->oDomicilio->aFields['cPrefijoTelefono']->getValue() . ') ' .$this->oDomicilio->aFields['cTelefono']->getValue();
					break;
				case 'Fax':
					if ( $this->oDomicilio->aFields['cFax']->getValue() ) $cReturn = '(' .$this->oDomicilio->aFields['cPrefijoTelefono']->getValue() . ') ' . $this->oDomicilio->aFields['cFax']->getValue();
					break;
				default:
					return false;
				break;
			}
			return $cReturn;
		}
	function makeListActions()
		{
			$cParametroRegistro =  $this->getFieldString();
			$this->addListAction ( AGREGAR_DOMICILIO, $cParametroRegistro , 'I', VENTANA_SECUNDARIA );
		}
	function makeRowActions( $aRow )
		{
			$cParametroRegistro =  "ncDomicilio=" . $aRow["ncDomicilio"];
			$this->addRowAction ( MODIFICAR_DOMICILIO, $cParametroRegistro , '', VENTANA_SECUNDARIA);
			$this->addRowAction ( ELIMINAR_DOMICILIO,  $cParametroRegistro );
			$this->addRowAction ( VER_DOMICILIO, $cParametroRegistro );
		}
	function makeComplex()
		{
			$oMapa = new Mapa();
			$oMapa->setPoint($this->aFields['nX'], $this->aFields['nY']) ;
			echo "<div style='height: 400px; width: 600px;'>";
            echo $oMapa->make();
			echo "</div>";
		}
	}
?>
